home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / progjour / 1991 / 02 / vtree / disndata.lst next >
File List  |  1991-01-06  |  3KB  |  192 lines

  1.     PAGE    60,132
  2. .286c
  3. ;----------------------------------------------
  4. S00000    SEGMENT Byte Public 'code0000'
  5.     ASSUME    CS:S00000
  6.     ASSUME    SS:S00000
  7. H00000    DB    92 DUP(?)
  8. H0005C    DB    57 DUP(?)
  9. H00095    DB    107 DUP(?)
  10. ;-------- PROGRAM'S PRIMARY ENTRY POINT -------
  11. P00100    PROC    Far
  12.     ASSUME    ES:S00000
  13.     ASSUME    DS:S00000
  14. H00100:    JMP    Short H00161
  15.     DB    90h
  16. H00103    DB    0
  17.     DB    ":\*.*"
  18.     DB    0
  19.     DB    "(C) Copyright Charles Petzold,"
  20.     DB    " 1985"
  21. H0012D    DB    "Invalid disk drive$"
  22. H00140    DB    "Requires DOS 2.0 +$"
  23. H00153    DB    0
  24. H00154    DW    0
  25.     DB    "\*.*"
  26.     DB    0
  27. H0015B    DW    0106h
  28. H0015D    DW    033Ch
  29. H0015F    DW    0
  30. H00161:    CMP    AL,0FFh
  31.     JNE    H0016F
  32.     LEA    DX,H0012D
  33. H00169:    MOV    AH,9
  34.     INT    21h    ;Display($-term)string<-DS:DX
  35.     INT    20h    ;Program Terminate
  36. H0016F:    MOV    AH,30h
  37.     INT    21h    ;Get DOS Vers.# (Vers. "AL.AH")
  38.     CMP    AL,2
  39.     JNC    H0017D
  40.     LEA    DX,H00140
  41.     JMP    H00169
  42. H0017D:    MOV    AL,H0005C
  43.     OR    AL,AL
  44.     JNE    H0018A
  45.     MOV    AH,19h
  46.     INT    21h    ;Return Default Drive in AL(0=A:,1=B:...)
  47.     INC    AL
  48. H0018A:    MOV    DL,AL
  49.     ADD    AL,40h
  50.     MOV    H00103,AL
  51.     CLD
  52. H00192:    MOV    DX,H0015D
  53.     MOV    AH,1Ah
  54.     INT    21h    ;Set Disk Transfer Addr. to DS:DX
  55.     MOV    BX,H00154
  56.     ADD    BX,BX
  57.     CMP    H00153,0
  58.     JNE    H001B9
  59.     MOV    Word Ptr [BX+02FCh],0000h
  60.     MOV    DX,0103h
  61.     MOV    CX,0010h
  62.     MOV    AH,4Eh
  63.     INT    21h    ;Find 1st Match in Dir.(DS:DX->file,CX=Attr.)
  64.     JMP    Short H001BD
  65. H001B9:    MOV    AH,4Fh
  66.     INT    21h    ;Find Next Match in Dir.(uses DTA)
  67. H001BD:    JNC    H001C2
  68.     JMP    H002A0
  69. H001C2:    MOV    SI,H0015D
  70.     CMP    Byte Ptr [SI+15h],10h
  71.     JNE    H001B9
  72.     ADD    SI,1Eh
  73.     CMP    Byte Ptr [SI],2Eh
  74.     JE    H001B9
  75.     INC    Word Ptr [BX+02FCh]
  76.     MOV    CX,H00154
  77.     JCXZ    H00218
  78.     CMP    Word Ptr [BX+02FCh],1
  79.     JE    H00206
  80.     SUB    BX,BX
  81. H001E7:    MOV    AL,0B3h
  82.     TEST    Word Ptr [BX+02FCh],8000h
  83.     JE    H001F3
  84.     MOV    AL,20h
  85. H001F3:    CALL    P002F3
  86.     PUSH    CX
  87.     MOV    CX,0010h
  88. H001FA:    MOV    AL,20h
  89.     CALL    P002F3
  90.     LOOP    H001FA
  91.     POP    CX
  92.     INC    BX
  93.     INC    BX
  94.     LOOP    H001E7
  95. H00206:    CMP    Word Ptr [BX+02FCh],1
  96.     JNE    H00218
  97.     MOV    CX,H0015F
  98. H00211:    MOV    AL,0C4h
  99.     CALL    P002F3
  100.     LOOP    H00211
  101. H00218:    PUSH    SI
  102.     MOV    SI,H0015D
  103.     MOV    DI,0080h
  104.     MOV    DX,DI
  105.     MOV    CX,002Bh
  106.     REPZ    MOVSB
  107.     POP    SI
  108.     MOV    AH,1Ah
  109.     INT    21h    ;Set Disk Transfer Addr. to DS:DX
  110. H0022C:    MOV    AH,4Fh
  111.     INT    21h    ;Find Next Match in Dir.(uses DTA)
  112.     JC    H00246
  113.     CMP    H00095,10h
  114.     JNE    H0022C
  115.     MOV    AL,0C2h
  116.     CMP    Word Ptr [BX+02FCh],1
  117.     JE    H00257
  118.     MOV    AL,0C3h
  119.     JMP    Short H00257
  120. H00246:    MOV    AL,0C4h
  121.     CMP    Word Ptr [BX+02FCh],1
  122.     JE    H00257
  123.     MOV    AL,0C0h
  124.     OR    Word Ptr [BX+02FCh],8000h
  125. H00257:    CALL    P002F3
  126.     MOV    AL,0C4h
  127.     CALL    P002F3
  128.     MOV    AL,20h
  129.     CALL    P002F3
  130.     MOV    CX,000Dh
  131.     MOV    DI,H0015B
  132. H0026B:    LODSB
  133.     OR    AL,AL
  134.     JE    H00276
  135.     STOSB
  136.     CALL    P002F3
  137.     LOOP    H0026B
  138. H00276:    MOV    AL,20h
  139.     CALL    P002F3
  140.     MOV    H0015F,CX
  141.     MOV    H0015B,DI
  142.     INC    Word Ptr H0015B
  143.     MOV    SI,0156h
  144.     MOV    CX,0005h
  145.     REPZ    MOVSB
  146.     INC    Word Ptr H00154
  147.     MOV    H00153,0
  148.     ADD    H0015D,2Bh
  149.     JMP    H00192
  150. H002A0:    CMP    H00154,0
  151.     JE    H002F1
  152.     TEST    Word Ptr [BX+02FCh],7FFFh
  153.     JNE    H002B9
  154.     MOV    AL,0Dh
  155.     CALL    P002F3
  156.     MOV    AL,0Ah
  157.     CALL    P002F3
  158. H002B9:    MOV    DI,0103h
  159.     MOV    CX,0046h
  160.     MOV    AL,0
  161.     REPNZ    SCASB
  162.     DEC    DI
  163.     MOV    CX,0040h
  164.     MOV    AL,5Ch
  165.     STD
  166.     REPNZ    SCASB
  167.     REPNZ    SCASB
  168.     INC    DI
  169.     MOV    H0015B,DI
  170.     INC    Word Ptr H0015B
  171.     MOV    SI,0156h
  172.     MOV    CX,0005h
  173.     CLD
  174.     REPZ    MOVSB
  175.     DEC    H00154
  176.     MOV    H00153,1
  177.     SUB    H0015D,2Bh
  178.     JMP    H00192
  179. H002F1:    INT    20h    ;Program Terminate
  180. P00100    ENDP
  181. ;----------------------------------------------
  182. P002F3    PROC    Near
  183. H002F3:    PUSH    DX
  184.     MOV    DL,AL
  185.     MOV    AH,2
  186.     INT    21h    ;Display Character in DL
  187.     POP    DX
  188.     RETN
  189. P002F3    ENDP
  190. S00000    ENDS
  191.     END    P00100
  192.